const handleBlogRoute=require('./src/routes/blog');
const querystring=require('querystring');

//异步获取post数据的代码
const getPostData=(req)=>{
    const promise =new Promise((resolve,reject)=>{
        if(req.method==="POST"){
            resolve({});
            return;
        }
        if(req.headers['content-type']!=='application/json'){
            resolve({});
            return;
        }
        let postData='';
        req.on('data',chunk=>{
            postData+=chunk.toString();
        })
        // req.on('end',()=>{
        //     console.log('postData',postData);
        //     res.end('数据接收完毕');
        // })
        req.on('end',()=>{
            if(!postData){
                resolve({});
                return;
            }
            resolve(
                JSON.parse(postData)
            );
        });
    });
    return promise;
};


const serverHandler=(req,res)=>{
    //设置相应格式
    res.setHeader('Content-Type','applocation/json');
    
    //获取path
    const url=req.url;
    req.path=url.split('?')[0];
   
    //解析query
    req.query=querystring.parse(url.split('?'[1]));
    
    //异步获取post数据并执行路由
    getPostData(req).then((postData)=>{
        //将post数据赋值给请求，方便其他路由调用。
        req.body=postData;
        //博客相关路由
        const blogDataPromise=handleBlogRoute(req,res);
        if(blogDataPromise){
            blogDataPromise.then(blogData=>{
                res.end(JSON.stringify(blogData)); 
            }); 
            return;      
        }

        //当客户端访问不存在的路由时，返回404报错信息
        res.writeHead(404,{'Content-Type':'text/plain'});
        res.write('404 Not Found');
        res.end();
    })    
}

module.exports=serverHandler;
